/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.webhomesites.padrao.model;

import br.com.webhomesites.padrao.contracts.IProdutoDAO;
import java.io.Serializable;
import javax.persistence.Transient;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import org.hibernate.annotations.Entity;


/**
 *
 * @author Webhome
 */
@Entity
@Table(name="PADPRODUTO")
public class ProdutoModel implements Serializable{
    
    @Id 
    @SequenceGenerator(name="CODPRODUTO", sequenceName="CODPRODUTO", allocationSize=1)
    @GeneratedValue(strategy= GenerationType.SEQUENCE, generator="CODPRODUTO")
    @Column(name="CODPRODUTO", nullable=false) 
    private int codigoProduto;
    
    @Column(name="SERIEPRODUTO")
    private String serie;
    
    @Column(name="DESCRICAOPRODUTO")
    private String descricao;
    
    @Transient
    private int codigoTipo;
    
    @Transient
    private String DescricaoTipo;
    
    private double precoDiario;
    private double precoSemanal;
    private double precoQuinzenal;
    private double precoMensal;
    
    private IProdutoDAO produtoDAO;
    
    private List<ProdutoModel> listaProdutos = new ArrayList<>();
    
    public ProdutoModel(IProdutoDAO produtoDAO) {
        this.produtoDAO = produtoDAO;
    }

    public int getCodigo() {
        return codigoProduto;
    }

    public double getPrecoDiario() {
        return precoDiario;
    }

    public void setPrecoDiario(double precoDiario) {
        this.precoDiario = precoDiario;
    }

    public double getPrecoMensal() {
        return precoMensal;
    }

    public void setPrecoMensal(double precoMensal) {
        this.precoMensal = precoMensal;
    }

    public double getPrecoQuinzenal() {
        return precoQuinzenal;
    }

    public void setPrecoQuinzenal(double precoQuinzenal) {
        this.precoQuinzenal = precoQuinzenal;
    }

    public double getPrecoSemanal() {
        return precoSemanal;
    }

    public void setPrecoSemanal(double precoSemanal) {
        this.precoSemanal = precoSemanal;
    }

    public void setCodigo(int codigo) {
        this.codigoProduto = codigo;
    }

    public int getCodigoTipo() {
        return codigoTipo;
    }

    public void setCodigoTipo(int codigoTipo) {
        this.codigoTipo = codigoTipo;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public String getSerie() {
        return serie;
    }

    public void setSerie(String serie) {
        this.serie = serie;
    }

    public String getDescricaoTipo() {
        return DescricaoTipo;
    }

    public void setDescricaoTipo(String DescricaoTipo) {
        this.DescricaoTipo = DescricaoTipo;
    }
    
    public List<ProdutoModel> getlistaProdutos() {
        setlistaProdutos();
        return listaProdutos;
    }

    public void setlistaProdutos() {
        this.listaProdutos = produtoDAO.selecionarTodosProdutos();
    }
    
    public int getChaveProduto(String nomeProduto) {
        
        setlistaProdutos();
        
        int codigo = 0;
                
        for(int i = 0; i < getlistaProdutos().size(); i++) // Percorro o Array List com o For aprimorado.  
        {  
            if(getlistaProdutos().get(i).getDescricao().equals(nomeProduto)) // Adiciono os dados.  
            codigo = getlistaProdutos().get(i).getCodigo();
        }
        return codigo;
    }
    
    @Override
    public String toString() {
      return "Codigo = " + getCodigo() + "\n" +
             "Descrição = " + getDescricao() + "\n" +
             "Tipo = " + getDescricaoTipo() + "\n" +
             "Série = " + getSerie() + "\n" +
             "Preço Diário = " + getPrecoDiario() + "\n" +
             "Preço Semanal = " + getPrecoSemanal() + "\n" +
             "Preço Quinzenal = " + getPrecoQuinzenal() + "\n" +
             "Preço Mensal = " + getPrecoSemanal() + "\n";            
    }
            
}
